package com.loong.loong.hik.service;

import com.loong.loong.hik.property.request.video.VideoControlCruiseroutesRequest;
import com.loong.loong.hik.property.request.video.VideoDelCruiseroutesRequest;
import com.loong.loong.hik.property.request.video.VideoDelPresetsRequest;
import com.loong.loong.hik.property.request.video.VideoGetAlarmoutStatusRequest;
import com.loong.loong.hik.property.request.video.VideoGetEventsPictureRequest;
import com.loong.loong.hik.property.request.video.VideoGetEventsPictureResult;
import com.loong.loong.hik.property.request.video.VideoGetOnlineCameraRequest;
import com.loong.loong.hik.property.request.video.VideoGetOnlineDeviceRequest;
import com.loong.loong.hik.property.request.video.VideoGetPicparamsRequest;
import com.loong.loong.hik.property.request.video.VideoGetPresetsRequest;
import com.loong.loong.hik.property.request.video.VideoGetVideoparamsRequest;
import com.loong.loong.hik.property.request.video.VideoManualCaptureRequest;
import com.loong.loong.hik.property.request.video.VideoManualRecordStartRequest;
import com.loong.loong.hik.property.request.video.VideoManualRecordStopRequest;
import com.loong.loong.hik.property.request.video.VideoPresetsAdditionRequest;
import com.loong.loong.hik.property.request.video.VideoQryAlarmoutRequest;
import com.loong.loong.hik.property.request.video.VideoQryCameraBackRequest;
import com.loong.loong.hik.property.request.video.VideoQryCameraRequest;
import com.loong.loong.hik.property.request.video.VideoQryCruiseroutesRequest;
import com.loong.loong.hik.property.request.video.VideoQryDeviceByRegionRequest;
import com.loong.loong.hik.property.request.video.VideoQryDeviceByTimeRequest;
import com.loong.loong.hik.property.request.video.VideoQryDeviceRequestDto;
import com.loong.loong.hik.property.request.video.VideoQryMonitorByCameraIndexCodeRequest;
import com.loong.loong.hik.property.request.video.VideoQryMonitorByIndexCodeRequest;
import com.loong.loong.hik.property.request.video.VideoQryMonitorByPageRequest;
import com.loong.loong.hik.property.request.video.VideoQryMonitorByTimeRequest;
import com.loong.loong.hik.property.request.video.VideoQryMonitorListRequest;
import com.loong.loong.hik.property.request.video.VideoQryPictureRequest;
import com.loong.loong.hik.property.request.video.VideoQryPresetsRequest;
import com.loong.loong.hik.property.request.video.VideoQryRecordListRequest;
import com.loong.loong.hik.property.request.video.VideoQryTaskidRequest;
import com.loong.loong.hik.property.request.video.VideoQryVqdListRequest;
import com.loong.loong.hik.property.request.video.VideoRecordLockRequest;
import com.loong.loong.hik.property.request.video.VideoSetAlarmoutStatusRequest;
import com.loong.loong.hik.property.request.video.VideoUpdateCruiseroutesRequest;
import com.loong.loong.hik.property.request.video.VideoUpdatePicparamsRequest;
import com.loong.loong.hik.property.request.video.VideoUpdateShowstringparamsRequest;
import com.loong.loong.hik.property.request.video.VideoUpdateVideoparamsRequest;
import com.loong.loong.hik.property.result.video.VideoControlCruiseroutesResult;
import com.loong.loong.hik.property.result.video.VideoDelCruiseroutesResult;
import com.loong.loong.hik.property.result.video.VideoDelPresetsResult;
import com.loong.loong.hik.property.result.video.VideoGetAlarmoutStatusResult;
import com.loong.loong.hik.property.result.video.VideoGetOnlineCameraResult;
import com.loong.loong.hik.property.result.video.VideoGetOnlineDeviceResult;
import com.loong.loong.hik.property.result.video.VideoGetPicparamsResult;
import com.loong.loong.hik.property.result.video.VideoGetPresetsResult;
import com.loong.loong.hik.property.result.video.VideoGetShowstringparamsRequest;
import com.loong.loong.hik.property.result.video.VideoGetShowstringparamsResult;
import com.loong.loong.hik.property.result.video.VideoGetVideoparamsResult;
import com.loong.loong.hik.property.result.video.VideoManualCaptureResult;
import com.loong.loong.hik.property.result.video.VideoManualRecordStartResult;
import com.loong.loong.hik.property.result.video.VideoManualRecordStatusResult;
import com.loong.loong.hik.property.result.video.VideoManualRecordStopResult;
import com.loong.loong.hik.property.result.video.VideoPresetsAdditionResult;
import com.loong.loong.hik.property.result.video.VideoQryAlarmoutByTimeResult;
import com.loong.loong.hik.property.result.video.VideoQryAlarmoutResult;
import com.loong.loong.hik.property.result.video.VideoQryCameraBackResult;
import com.loong.loong.hik.property.result.video.VideoQryCameraResult;
import com.loong.loong.hik.property.result.video.VideoQryCruiseroutesResult;
import com.loong.loong.hik.property.result.video.VideoQryDeviceByRegionResult;
import com.loong.loong.hik.property.result.video.VideoQryDeviceByTimeResult;
import com.loong.loong.hik.property.result.video.VideoQryDeviceResultVo;
import com.loong.loong.hik.property.result.video.VideoQryMonitorByCameraIndexCodeResult;
import com.loong.loong.hik.property.result.video.VideoQryMonitorByIndexCodeResult;
import com.loong.loong.hik.property.result.video.VideoQryMonitorByPageResult;
import com.loong.loong.hik.property.result.video.VideoQryMonitorByTimeResult;
import com.loong.loong.hik.property.result.video.VideoQryMonitorListResult;
import com.loong.loong.hik.property.result.video.VideoQryPictureResult;
import com.loong.loong.hik.property.result.video.VideoQryPresetsResult;
import com.loong.loong.hik.property.result.video.VideoQryRecordListResult;
import com.loong.loong.hik.property.result.video.VideoQryTaskidResult;
import com.loong.loong.hik.property.result.video.VideoQryVqdListResult;
import com.loong.loong.hik.property.result.video.VideoRecordLockResult;
import com.loong.loong.hik.property.result.video.VideoSetAlarmoutStatusResult;
import com.loong.loong.hik.property.result.video.VideoUpdateCruiseroutesResult;
import com.loong.loong.hik.property.result.video.VideoUpdatePicparamsResult;
import com.loong.loong.hik.property.result.video.VideoUpdateShowstringparamsResult;
import com.loong.loong.hik.property.result.video.VideoUpdateVideoparamsResult;
import com.loong.loong.hik.property.urls.video.HikVideoNetWorkUrl;
import com.loong.loong.hik.property.urls.video.HikVideoPowerUrl;
import com.loong.loong.hik.property.urls.video.HikVideoResourceUrl;
import com.loong.loong.hik.util.HikUtil;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;

/**
 * 视频
 * @author jinyiang
 * @date 2023/3/12 14:45
 */
@Component
public class HikVideoVService {
	@Resource
	private HikUtil hikUtil;
	/**
	 * 按条件查询识别资源
	 */
	public VideoQryDeviceResultVo qryDevice(VideoQryDeviceRequestDto videoQryDeviceRequestDto) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_DEVICE, videoQryDeviceRequestDto, VideoQryDeviceResultVo.class);
	}
	/**
	 * 根据区域获取下级编码设备列表
	 */
	public VideoQryDeviceByRegionResult qryDeviceByRegion(VideoQryDeviceByRegionRequest videoQryDeviceByRegionRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_DEVICE_BY_REGION, videoQryDeviceByRegionRequest, VideoQryDeviceByRegionResult.class);
	}
	/**
	 * 增量获取编码设备数据
	 */
	public VideoQryDeviceByTimeResult qryDeviceByTime(VideoQryDeviceByTimeRequest videoQryDeviceByRegionRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_DEVICE_BY_TIME, videoQryDeviceByRegionRequest, VideoQryDeviceByTimeResult.class);
	}
	/**
	 * 查询监控点列表v2
	 */
	public VideoQryMonitorListResult qryMonitorList(VideoQryMonitorListRequest videoQryMonitorListRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_MONITOR_LIST, videoQryMonitorListRequest, VideoQryMonitorListResult.class);
	}
	/**
	 * 分页获取监控点资源
	 */
	public VideoQryMonitorByPageResult qryMonitorByPage(VideoQryMonitorByPageRequest videoQryMonitorByPageRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_MONITOR_BY_PAGE, videoQryMonitorByPageRequest, VideoQryMonitorByPageResult.class);
	}
	/**
	 * 根据区域编号获取下级监控点列表
	 */
	public VideoQryMonitorByIndexCodeResult qryMonitorByIndexCode(VideoQryMonitorByIndexCodeRequest videoQryMonitorByIndexCodeRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_MONITOR_BY_INDEX_CODE, videoQryMonitorByIndexCodeRequest, VideoQryMonitorByIndexCodeResult.class);
	}
	/**
	 * 根据编号获取监控点详细信息
	 */
	public VideoQryMonitorByCameraIndexCodeResult qryMonitorByCameraIndexCode(VideoQryMonitorByCameraIndexCodeRequest videoQryMonitorByCameraIndexCodeRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_MONITOR_BY_cameraIndexCode, videoQryMonitorByCameraIndexCodeRequest, VideoQryMonitorByCameraIndexCodeResult.class);
	}
	/**
	 * 增量获取监控点数据
	 */
	public VideoQryMonitorByTimeResult qryMonitorByTime(VideoQryMonitorByTimeRequest videoQryMonitorByTimeRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_MONITOR_BY_TIME, videoQryMonitorByTimeRequest, VideoQryMonitorByTimeResult.class);
	}
	/**
	 * 查询报警输出列表
	 */
	public VideoQryAlarmoutResult qryAlarmout(VideoQryAlarmoutRequest videoQryAlarmoutRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_ALARMOUT, videoQryAlarmoutRequest, VideoQryAlarmoutResult.class);
	}
	/**
	 * 增量获取报警输出数据
	 */
	public VideoQryAlarmoutByTimeResult qryAlarmoutByTime(VideoQryMonitorByTimeRequest videoQryMonitorByTimeRequest) throws Exception{
		return hikUtil.doPost(HikVideoResourceUrl.QRY_ALARMOUT_BY_TIME, videoQryMonitorByTimeRequest, VideoQryAlarmoutByTimeResult.class);
	}
	/**
	 * 获取监控点预览取流URLv2
	 */
	public VideoQryCameraResult qryCamera(VideoQryCameraRequest videoQryCameraRequest) throws Exception{
		return hikUtil.doPost(HikVideoPowerUrl.QRY_CAMERA, videoQryCameraRequest, VideoQryCameraResult.class);
	}
	/**
	 * 获取监控点回放取流URLv2
	 */
	public VideoQryCameraBackResult qryCameraBack(VideoQryCameraBackRequest videoQryCameraBackRequest) throws Exception{
		return hikUtil.doPost(HikVideoPowerUrl.QRY_CAMERA_BACK, videoQryCameraBackRequest, VideoQryCameraBackResult.class);
	}
	/**
	 * 查询对讲URL
	 */
	public VideoQryCameraResult qryTalkUrl(VideoQryCameraBackRequest videoQryCameraBackRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.QRY_TALK_URL, videoQryCameraBackRequest, VideoQryCameraResult.class);
	}
	/**
	 * 根据监控点编号进行云台操作
	 */
	public VideoQryCameraResult controllByCameraIndexcode(VideoQryCameraBackRequest videoQryCameraBackRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.CONTROLL_BY_cameraIndexCode, videoQryCameraBackRequest, VideoQryCameraResult.class);
	}
	/**
	 * 手动抓图
	 */
	public VideoManualCaptureResult manualCapture(VideoManualCaptureRequest videoManualCaptureRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.MANUAL_CAPTURE, videoManualCaptureRequest, VideoManualCaptureResult.class);
	}
	/**
	 * 监控点3D放大
	 */
	public VideoManualCaptureResult selZoom(VideoManualCaptureRequest videoManualCaptureRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.SELZOOM, videoManualCaptureRequest, VideoManualCaptureResult.class);
	}
	/**
	 * 录像锁定与解锁
	 */
	public VideoRecordLockResult recordLock(VideoRecordLockRequest videoRecordLockRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.RECORD_LOCK, videoRecordLockRequest, VideoRecordLockResult.class);
	}
	/**
	 * 开始手动录像
	 */
	public VideoManualRecordStartResult manualRecordStart(VideoManualRecordStartRequest videoManualRecordStartRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.MANUAL_RECORD_START, videoManualRecordStartRequest, VideoManualRecordStartResult.class);
	}
	/**
	 * 停止手动录像
	 */
	public VideoManualRecordStopResult manualRecordStop(VideoManualRecordStopRequest videoManualRecordStopRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.MANUAL_RECORD_STOP, videoManualRecordStopRequest, VideoManualRecordStopResult.class);
	}
	/**
	 * 获取手动录像状态
	 */
	public VideoManualRecordStatusResult manualRecordStatus(VideoManualRecordStopRequest videoManualRecordStopRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.MANUAL_RECORD_STATUS, videoManualRecordStopRequest, VideoManualRecordStatusResult.class);
	}
	/**
	 * 查询手动录像编号
	 */
	public VideoQryTaskidResult qryTaskid(VideoQryTaskidRequest videoQryTaskidRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.QRY_TASKID, videoQryTaskidRequest, VideoQryTaskidResult.class);
	}
	/**
	 * 设置预置点信息
	 */
	public VideoPresetsAdditionResult presetsAddition(VideoPresetsAdditionRequest videoQryTaskidRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.PRESETS_ADDITION, videoQryTaskidRequest, VideoPresetsAdditionResult.class);
	}
	/**
	 * 查询预置点信息
	 */
	public VideoQryPresetsResult qryPresets(VideoQryPresetsRequest videoQryPresetsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.QRY_PRESETS, videoQryPresetsRequest, VideoQryPresetsResult.class);
	}
	/**
	 * 删除预置点信息
	 */
	public VideoDelPresetsResult delPresets(VideoDelPresetsRequest videoDelPresetsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.DEL_PRESETS, videoDelPresetsRequest, VideoDelPresetsResult.class);
	}
	/**
	 * 批量获取监控点的预置点信息
	 */
	public VideoGetPresetsResult getPresets(VideoGetPresetsRequest videoGetPresetsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.GET_PRESETS, videoGetPresetsRequest, VideoGetPresetsResult.class);
	}
	/**
	 * 视频图片查询
	 */
	public VideoQryPictureResult qryPicture(VideoQryPictureRequest videoQryPictureRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.QRY_PICTURE, videoQryPictureRequest, VideoQryPictureResult.class);
	}
	/**
	 * 视频图片查询
	 */
	public VideoGetEventsPictureResult getEventsPicture(VideoGetEventsPictureRequest videoGetEventsPictureRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.GET_EVENTS_PICTURE, videoGetEventsPictureRequest, VideoGetEventsPictureResult.class);
	}
	/**
	 * 查询巡航路径
	 */
	public VideoQryCruiseroutesResult qryCruiseroutes(VideoQryCruiseroutesRequest videoQryCruiseroutesRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.QRY_CRUISEROUTES, videoQryCruiseroutesRequest, VideoQryCruiseroutesResult.class);
	}

	/**
	 * 添加或修改巡航路径
	 */
	public VideoUpdateCruiseroutesResult updateCruiseroutes(VideoUpdateCruiseroutesRequest videoUpdateCruiseroutesRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.UPDATE_CRUISEROUTES, videoUpdateCruiseroutesRequest, VideoUpdateCruiseroutesResult.class);
	}
	/**
	 * 删除巡航路径
	 */
	public VideoDelCruiseroutesResult delCruiseroutes(VideoDelCruiseroutesRequest videoDelCruiseroutesRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.DEL_CRUISEROUTES, videoDelCruiseroutesRequest, VideoDelCruiseroutesResult.class);
	}
	/**
	 * 巡航路径控制
	 */
	public VideoControlCruiseroutesResult controlCruiseroutes(VideoControlCruiseroutesRequest videoControlCruiseroutesRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.CONTROL_CRUISEROUTES, videoControlCruiseroutesRequest, VideoControlCruiseroutesResult.class);
	}
	/**
	 * 获取视频OSD显示参数
	 */
	public VideoGetPicparamsResult getPicparams(VideoGetPicparamsRequest videoGetPicparamsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.GET_PICPARAMS, videoGetPicparamsRequest, VideoGetPicparamsResult.class);
	}
	/**
	 * 获取视频叠加字符串参数
	 */
	public VideoGetShowstringparamsResult getShowstringparams(VideoGetShowstringparamsRequest videoGetShowstringparamsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.GET_SHOWSTRINGPARAMS, videoGetShowstringparamsRequest, VideoGetShowstringparamsResult.class);
	}
	/**
	 * 获取预览画面参数配置
	 */
	public VideoGetVideoparamsResult getVideoparams(VideoGetVideoparamsRequest videoGetVideoparamsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.GET_VIDEOPARAMS, videoGetVideoparamsRequest, VideoGetVideoparamsResult.class);
	}
	/**
	 * 设置视频OSD显示参数
	 */
	public VideoUpdatePicparamsResult updatePicparams(VideoUpdatePicparamsRequest videoUpdatePicparamsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.UPDATE_PICPARAMS, videoUpdatePicparamsRequest, VideoUpdatePicparamsResult.class);
	}
	/**
	 * 设置视频OSD显示参数
	 */
	public VideoUpdateShowstringparamsResult updateShowstringparams(VideoUpdateShowstringparamsRequest videoUpdateShowstringparamsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.UPDATE_SHOWSTRINGPARAMS, videoUpdateShowstringparamsRequest, VideoUpdateShowstringparamsResult.class);
	}
	/**
	 * 设置视频OSD显示参数
	 */
	public VideoUpdateVideoparamsResult updateVideoparams(VideoUpdateVideoparamsRequest videoUpdateVideoparamsRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.UPDATE_VIDEOPARAMS, videoUpdateVideoparamsRequest, VideoUpdateVideoparamsResult.class);
	}
	/**
	 * 设置视频OSD显示参数
	 */
	public VideoGetAlarmoutStatusResult getAlarmoutStatus(VideoGetAlarmoutStatusRequest videoGetAlarmoutStatusRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.GET_ALARMOUT_STATUS, videoGetAlarmoutStatusRequest, VideoGetAlarmoutStatusResult.class);
	}
	/**
	 * 设置视频OSD显示参数
	 */
	public VideoSetAlarmoutStatusResult setAlarmoutStatus(VideoSetAlarmoutStatusRequest videoSetAlarmoutStatusRequest) throws Exception {
		return hikUtil.doPost(HikVideoPowerUrl.SET_ALARMOUT_STATUS, videoSetAlarmoutStatusRequest, VideoSetAlarmoutStatusResult.class);
	}
	/**
	 * 根据监控点列表查询录像完整性结果
	 */
	public VideoQryRecordListResult qryRecordList(VideoQryRecordListRequest videoQryRecordListRequest) throws Exception {
		return hikUtil.doPost(HikVideoNetWorkUrl.QRY_RECORD_LIST, videoQryRecordListRequest, VideoQryRecordListResult.class);
	}
	/**
	 * 根据监控点列表查询视频质量诊断结果
	 */
	public VideoQryVqdListResult qryVqdList(VideoQryVqdListRequest videoQryVqdListRequest) throws Exception {
		return hikUtil.doPost(HikVideoNetWorkUrl.QRY_VQD_LIST, videoQryVqdListRequest, VideoQryVqdListResult.class);
	}
	/**
	 * 获取监控点在线状态
	 */
	public VideoGetOnlineCameraResult getOnlineCamera(VideoGetOnlineCameraRequest videoGetOnlineCameraRequest) throws Exception {
		return hikUtil.doPost(HikVideoNetWorkUrl.GET_ONLINE_CAMERA, videoGetOnlineCameraRequest, VideoGetOnlineCameraResult.class);
	}
	/**
	 * 获取编码设备在线状态
	 */
	public VideoGetOnlineDeviceResult getOnlineDevice(VideoGetOnlineDeviceRequest videoGetOnlineDeviceRequest) throws Exception {
		return hikUtil.doPost(HikVideoNetWorkUrl.GET_ONLINE_DEVICE, videoGetOnlineDeviceRequest, VideoGetOnlineDeviceResult.class);
	}

}
